Compilation

SNiFF+ does not use the same compilation concept for Java as for other languages. Dependency checking is not done by the Java compiler because it is handled differently on different platforms as well as by different compilers.
Checking dependencies is done entirely by the

sniffjmake wrapper application, this wrapper calls the Java compiler without the dependency checking flag. All computing is done in the wrapper, and the Java compiler only compiles the files obtained from the wrapper.
If you compile an individual file with the Target > Make > FileName.class command (or in a Shell with gmake <`Filename`>), however, only this file is compiled. Referenced class files are only compiled if they do not yet exist.
If you compile an application or applet (i.e., a target), the sniffjmake wrapper makes sure that all referenced files are up-to-date, and passes a file list to the compiler for (re)compilation if necessary.
The information needed by the sniffjmake wrapper is contained in the following file
< `ProjectDirectory` >/.sniffdir/.sniffjmake
Unfortunately, there is a bug in the JDK javac compilers (tested up to version 1.6). If the source file is compiled more than once with the -depend flag set, a second byte-code file per anonymous class is generated. For this reason the -depend flag is disabled in the SNiFF+ standard distribution. If you have a compiler that does not have this bug, you can enable the full dependency check as described under The -depend option. Please note that you can only use this option with the Java compiler and not with the sniffjmake wrapper since because checking is handled by the wrapper itself.
Because SNiFF+ delegates dependency checking to the sniffjmake wrapper, there is a special case to be aware of. If you use classes that are dynamically loaded without being explicitly referenced, specify these classes in the Project Attributes dialog as described under Project Targets.